import request from '@/utils/request'

// ==================== 租户管理 ====================

// 获取租户列表（分页）
export function getTenantPage(params) {
  return request({
    url: '/api/tenant/page',
    method: 'get',
    params
  })
}

// 获取租户详情
export function getTenantDetail(id) {
  return request({
    url: `/api/tenant/${id}`,
    method: 'get'
  })
}

// 根据租户编码获取租户
export function getTenantByCode(tenantCode) {
  return request({
    url: `/api/tenant/code/${tenantCode}`,
    method: 'get'
  })
}

// 创建租户
export function createTenant(data) {
  return request({
    url: '/api/tenant',
    method: 'post',
    data
  })
}

// 更新租户
export function updateTenant(data) {
  return request({
    url: '/api/tenant',
    method: 'put',
    data
  })
}

// 更新租户状态
export function updateTenantStatus(id, status) {
  return request({
    url: `/api/tenant/${id}/status`,
    method: 'put',
    params: { status }
  })
}

// 删除租户
export function deleteTenant(id) {
  return request({
    url: `/api/tenant/${id}`,
    method: 'delete'
  })
}

// 批量删除租户
export function deleteTenantBatch(ids) {
  return request({
    url: '/api/tenant/batch',
    method: 'delete',
    data: ids
  })
}

// 获取即将到期的租户
export function getExpiringSoonTenants() {
  return request({
    url: '/api/tenant/expiring-soon',
    method: 'get'
  })
}

// 获取已过期的租户
export function getExpiredTenants() {
  return request({
    url: '/api/tenant/expired',
    method: 'get'
  })
}

// 获取租户统计信息
export function getTenantStats() {
  return request({
    url: '/api/tenant/stats',
    method: 'get'
  })
}

// 增加租户存储使用量
export function incrementStorageUsed(tenantId, increment) {
  return request({
    url: `/api/tenant/${tenantId}/storage/increment`,
    method: 'post',
    params: { increment }
  })
}

// 检查租户是否有效
export function isTenantValid(tenantId) {
  return request({
    url: `/api/tenant/${tenantId}/valid`,
    method: 'get'
  })
}

// ==================== 租户配置管理 ====================

// 获取租户配置列表
export function getTenantConfigs(tenantId) {
  return request({
    url: `/api/tenant-config/${tenantId}/configs`,
    method: 'get'
  })
}

// 获取租户配置值
export function getTenantConfigValue(tenantId, configKey) {
  return request({
    url: `/api/tenant-config/${tenantId}/config/${configKey}`,
    method: 'get'
  })
}

// 设置租户配置
export function setTenantConfig(tenantId, configKey, configValue, configType, description) {
  return request({
    url: `/api/tenant-config/${tenantId}/config`,
    method: 'post',
    data: {
      configKey,
      configValue,
      configType,
      description
    }
  })
}

// 批量设置租户配置
export function batchSetTenantConfigs(tenantId, configs) {
  return request({
    url: `/api/tenant-config/${tenantId}/configs/batch`,
    method: 'post',
    data: configs
  })
}

// 删除租户配置
export function deleteTenantConfig(tenantId, configKey) {
  return request({
    url: `/api/tenant-config/${tenantId}/config/${configKey}`,
    method: 'delete'
  })
}

// 获取租户系统配置
export function getTenantSystemConfigs(tenantId) {
  return request({
    url: `/api/tenant-config/${tenantId}/system-configs`,
    method: 'get'
  })
}

// 获取租户用户配置
export function getTenantUserConfigs(tenantId) {
  return request({
    url: `/api/tenant-config/${tenantId}/user-configs`,
    method: 'get'
  })
}

// 初始化租户默认配置
export function initTenantDefaultConfigs(tenantId) {
  return request({
    url: `/api/tenant-config/${tenantId}/init-defaults`,
    method: 'post'
  })
}

// 复制配置到新租户
export function copyTenantConfigs(sourceTenantId, targetTenantId) {
  return request({
    url: `/api/tenant-config/copy`,
    method: 'post',
    data: {
      sourceTenantId,
      targetTenantId
    }
  })
}

// ==================== 租户数据统计 ====================

// 获取租户用户统计
export function getTenantUserStats(tenantId) {
  return request({
    url: `/api/tenant/${tenantId}/user-stats`,
    method: 'get'
  })
}

// 获取租户存储统计
export function getTenantStorageStats(tenantId) {
  return request({
    url: `/api/tenant/${tenantId}/storage-stats`,
    method: 'get'
  })
}

// 获取租户活动统计
export function getTenantActivityStats(tenantId) {
  return request({
    url: `/api/tenant/${tenantId}/activity-stats`,
    method: 'get'
  })
}

// ==================== 租户操作日志 ====================

// 获取租户操作日志
export function getTenantOperationLogs(tenantId, params) {
  return request({
    url: `/api/tenant/${tenantId}/operation-logs`,
    method: 'get',
    params
  })
}

// 获取租户登录日志
export function getTenantLoginLogs(tenantId, params) {
  return request({
    url: `/api/tenant/${tenantId}/login-logs`,
    method: 'get',
    params
  })
}

// ==================== 租户导入导出 ====================

// 导出租户数据
export function exportTenantData(tenantId) {
  return request({
    url: `/api/tenant/${tenantId}/export`,
    method: 'get',
    responseType: 'blob'
  })
}

// 导入租户数据
export function importTenantData(tenantId, file) {
  const formData = new FormData()
  formData.append('file', file)
  return request({
    url: `/api/tenant/${tenantId}/import`,
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

// ==================== 租户模板管理 ====================

// 获取租户模板列表
export function getTenantTemplates() {
  return request({
    url: '/api/tenant/templates',
    method: 'get'
  })
}

// 根据模板创建租户
export function createTenantFromTemplate(templateId, data) {
  return request({
    url: `/api/tenant/create-from-template/${templateId}`,
    method: 'post',
    data
  })
}

// 将租户保存为模板
export function saveTenantAsTemplate(tenantId, templateName, description) {
  return request({
    url: `/api/tenant/${tenantId}/save-as-template`,
    method: 'post',
    data: {
      templateName,
      description
    }
  })
}
